function plot_labels(X, label)
% Plot samples of different labels with different colors.
% Written by Michael Chen (sth4nth@gmail.com).
[d,n] = size(X);
if nargin == 1
    label = ones(n,1);
end
assert(n == length(label));
[~,~,label] = unique(label);

color = 'brgmcyk';
m = length(color);
c = max(label);

figure(gcf);
clf;
hold on;
switch d
    case 2
        view(2);
        for i = 1:c
            %idc = label==i;
            plot(X(1,label==i),X(2,label==i),['.' color(i)],'MarkerSize',15);
            hold on;
            %scatter(X(1,idc),X(2,idc),36,color(mod(i-1,m)+1));
        end
    case 3
        view(3);
        for i = 1:c
            %idc = label==i;
            
            plot3(X(1,label==i),X(2,label==i),X(3,label==i),['.' color(i)],'MarkerSize',15);
            %plot3(X(1,:),X3(2,:),X3(3,:),'b.','MarkerSize',15);
            %scatter3(X(1,idc),X(2,idc),X(3,idc),36,color(mod(i-1,m)+1));
        end
    otherwise
        error('ERROR: only support data of 2D or 3D.');
end
axis equal
grid on
hold off